package Interfaz;

import java.util.ArrayList;

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.MessageBox;
import org.eclipse.swt.widgets.Monitor;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.MenuItem;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.TableItem;
import org.eclipse.wb.swt.SWTResourceManager;

import DTO.DTOFixture;
import DTO.DTOProximosEncuentros;
import Excepcion.FixtureDisputaFinalizadoException;
import Excepcion.NoHayDisponibilidadException;
import Excepcion.TablaNoPermitidaException;
import Negocios.ControlFixture;
import Persistencia.DAO.DAOCompetencia;
import Persistencia.Entidad.Competencia;
import Persistencia.Entidad.ModalidadDeCompetencia;
import Persistencia.Entidad.Participante;


/**
 * CU020 - Ver competencia
 * @author 
 */
public class CU020 {

	protected Shell shlCompetencia;
	private Table table;
	private Table tableParticipantes;
	
	private int idCompetencia;
	
	private CU003 pantallaAnterior;
	private CU020 myself;
	
	/**
	 * @wbp.parser.entryPoint
	 */
	public CU020(int idCompetencia, CU003 pantallaAnterior) {
		this.idCompetencia = idCompetencia;
		this.pantallaAnterior = pantallaAnterior;
		myself = this;
	}

	/**
	 * Open the window.
	 * @wbp.parser.entryPoint
	 */
	public void open() {
		Display display = Display.getDefault();
		createContents();
		
		// Centrar ventana
		Monitor primary = display.getPrimaryMonitor();
		Rectangle bounds = primary.getBounds();
		Rectangle rect = shlCompetencia.getBounds();	    
		int x = bounds.x + (bounds.width - rect.width) / 2;
		int y = bounds.y + (bounds.height - rect.height) / 2;	    
		shlCompetencia.setLocation(x, y);
		
		Label lblNewLabel = new Label(shlCompetencia, SWT.NONE);
		lblNewLabel.setBounds(10, 15, 47, 15);
		lblNewLabel.setText("Nombre:");
		
		Label lblModalidad = new Label(shlCompetencia, SWT.NONE);
		lblModalidad.setBounds(10, 55, 60, 15);
		lblModalidad.setText("Modalidad:");
		
		Label lblNewLabel_1 = new Label(shlCompetencia, SWT.NONE);
		lblNewLabel_1.setBounds(10, 95, 47, 15);
		lblNewLabel_1.setText("Deporte:");
		
		Label lblEstado = new Label(shlCompetencia, SWT.NONE);
		lblEstado.setBounds(10, 135, 38, 15);
		lblEstado.setText("Estado:");
		
		Menu menu = new Menu(shlCompetencia, SWT.BAR);
		shlCompetencia.setMenuBar(menu);
		
		MenuItem mntmOpciones = new MenuItem(menu, SWT.CASCADE);
		mntmOpciones.setText("Opciones");
		
		Menu menu_2 = new Menu(mntmOpciones);
		mntmOpciones.setMenu(menu_2);
		
		MenuItem mntmEditarCompetencia = new MenuItem(menu_2, SWT.NONE);
		mntmEditarCompetencia.setText("Editar competencia");
		
		MenuItem mntmEliminarCompetencia = new MenuItem(menu_2, SWT.NONE);
		mntmEliminarCompetencia.setText("Eliminar competencia");
		
		new MenuItem(menu_2, SWT.SEPARATOR);
		
		MenuItem mntmVerTablaDe = new MenuItem(menu_2, SWT.NONE);
		mntmVerTablaDe.setText("Ver tabla de posiciones");
		mntmVerTablaDe.addSelectionListener(new SelectionAdapter() {
			@Override
			public void widgetSelected(SelectionEvent e) {
				shlCompetencia.setVisible(false);
				
				try {
					CU021 VerTablaDe = new CU021(idCompetencia, myself);
					VerTablaDe.open();
					
					
					
				}
				catch (TablaNoPermitidaException ex) {
					MessageBox error = new MessageBox(shlCompetencia, SWT.ICON_ERROR);
					error.setMessage("La tabla de posiciones no se generar\u00E1 hasta que se cargue al menos un resultado.");
					error.open();
					
					shlCompetencia.setVisible(true);
				}
				catch (Exception ex) {
					ex.printStackTrace();
				}
			}
		});
		
		MenuItem mntmVerParticipantes = new MenuItem(menu_2, SWT.NONE);
		mntmVerParticipantes.setText("Ver participantes");
		mntmVerParticipantes.addSelectionListener(new SelectionAdapter() {
			@Override
			public void widgetSelected(SelectionEvent e) {
				shlCompetencia.setVisible(false);
				
				try {
					CU008 verParticipantes = new CU008(idCompetencia, myself);
					verParticipantes.open();
					shlCompetencia.update();//TODO

				}
				catch (Exception ex) {
					ex.printStackTrace();
				}
			}
		});
		
		new MenuItem(menu_2, SWT.SEPARATOR);
		
		MenuItem mntmSalir = new MenuItem(menu_2, SWT.NONE);
		mntmSalir.setText("Salir");
		mntmSalir.addSelectionListener(new SelectionAdapter() {
			@Override
			public void widgetSelected(SelectionEvent e) {
				shlCompetencia.close();
			}
		});
		
		MenuItem mntmFixture = new MenuItem(menu, SWT.CASCADE);
		mntmFixture.setText("Fixture");
		
		Menu menu_1 = new Menu(mntmFixture);
		mntmFixture.setMenu(menu_1);
		
		MenuItem mntmVerFixture = new MenuItem(menu_1, SWT.NONE);
		mntmVerFixture.setText("Ver fixture");
		mntmVerFixture.addSelectionListener(new SelectionAdapter() {
			@Override
			public void widgetSelected(SelectionEvent e) {
				shlCompetencia.setVisible(false);
				
				try {
					CU019 verFixture = new CU019(idCompetencia, myself);
					verFixture.open();
				}
				catch (Exception ex) {
					ex.printStackTrace();
				}
			}
		});
		
		MenuItem mntmGenerarFixture = new MenuItem(menu_1, SWT.NONE);
		mntmGenerarFixture.setText("Generar fixture");
		mntmGenerarFixture.addSelectionListener(new SelectionAdapter() {
			@Override
			public void widgetSelected(SelectionEvent e) {
				DAOCompetencia daoCompetencia = new DAOCompetencia();
				Competencia competencia = daoCompetencia.getCompetencia(idCompetencia);
				
				ControlFixture controlFixture = new ControlFixture();
				
				switch (competencia.getModalidadDeCompetencia().getId()) {
					case ModalidadDeCompetencia.LIGA:
						try {
							controlFixture.generarFixtureLiga(new DTOFixture(idCompetencia));
							
							MessageBox mensaje = new MessageBox(shlCompetencia, SWT.ICON_INFORMATION);
							mensaje.setMessage("El fixture ha sido creado exitosamente.");
							mensaje.open();
						}
						catch (FixtureDisputaFinalizadoException ex1) {
							MessageBox error = new MessageBox(shlCompetencia, SWT.ICON_ERROR);
							error.setMessage("Imposible crear fixture.\n" +
									"Competencia en disputa o finalizada.");
							error.open();
						}
						catch (NoHayDisponibilidadException ex2) {
							MessageBox error = new MessageBox(shlCompetencia, SWT.ICON_ERROR);
							error.setMessage("Imposible crear fixture.\n" +
									"No hay disponibilidad.");
							error.open();						}
						break;
					case ModalidadDeCompetencia.ELIMINACION_SIMPLE:
						break;
					case ModalidadDeCompetencia.ELIMINACION_DOBLE:
						break;
				}
			}
		});
		
		Label lblPrximosEncuentros = new Label(shlCompetencia, SWT.NONE);
		lblPrximosEncuentros.setBounds(10, 175, 114, 15);
		lblPrximosEncuentros.setText("Pr\u00F3ximos encuentros:");
		
		table = new Table(shlCompetencia, SWT.BORDER | SWT.FULL_SELECTION);
		table.setLinesVisible(true);
		table.setHeaderVisible(true);
		table.setBounds(10, 200, 539, 274);
		
		TableColumn tableColumn = new TableColumn(table, SWT.NONE);
		tableColumn.setWidth(54);
		tableColumn.setText("Partido");
		
		TableColumn tableColumn_1 = new TableColumn(table, SWT.NONE);
		tableColumn_1.setWidth(120);
		tableColumn_1.setText("Contrincante 1");
		
		TableColumn tableColumn_2 = new TableColumn(table, SWT.NONE);
		tableColumn_2.setWidth(120);
		tableColumn_2.setText("Contrincante 2");
		
		TableColumn tableColumn_5 = new TableColumn(table, SWT.NONE);
		tableColumn_5.setWidth(120);
		tableColumn_5.setText("Lugar");
		
		
		/*
		ControlFixture controlFixture=new ControlFixture();
		ArrayList<DTOProximosEncuentros> proximos= controlFixture.getProximosEncuentros(this.idCompetencia);
		
		for(int i=1;i<=proximos.size();i++){
			TableItem tableItem = new TableItem(table, 0);
			tableItem.setText(new String[] {i+"", proximos.get(i).getContrincante1(), proximos.get(i).getContrincante2(), proximos.get(i).getLugar()});
		}*/
		
		TableItem tableItem = new TableItem(table, 0);
		tableItem.setText(new String[] {"1", "Equipo A", "Equipo C", "Estadio UTN"});
		
		TableItem tableItem_1 = new TableItem(table, 0);
		tableItem_1.setText(new String[] {"2", "Equipo B", "Equipo D", "Estadio UTN"});
		
		TableItem tableItem_2 = new TableItem(table, 0);
		tableItem_2.setText(new String[] {"3", "Equipo A", "Equipo B", "Club ISI"});
		
		TableItem tableItem_3 = new TableItem(table, 0);
		tableItem_3.setText(new String[] {"4", "Equipo C", "Equipo D", "Club ISI"});
		
		Button btnSalir = new Button(shlCompetencia, SWT.NONE);
		btnSalir.setText("Salir");
		btnSalir.setBounds(429, 499, 108, 32);
		btnSalir.addSelectionListener(new SelectionAdapter() {
			@Override
			public void widgetSelected(SelectionEvent e) {
				shlCompetencia.close();
			}
		});
		
		Label lblNombreCompetencia = new Label(shlCompetencia, SWT.NONE);
		lblNombreCompetencia.setFont(SWTResourceManager.getFont("Segoe UI", 9, SWT.BOLD));
		lblNombreCompetencia.setBounds(63, 15, 200, 15);
		
		DAOCompetencia daoCompetencia = new DAOCompetencia();
		Competencia competencia = daoCompetencia.getCompetencia(idCompetencia);
		lblNombreCompetencia.setText(competencia.getNombre());
		
		Label lblEliminatoriaDoble = new Label(shlCompetencia, SWT.NONE);
		lblEliminatoriaDoble.setText(competencia.getModalidadDeCompetencia().getDescripcion());
		lblEliminatoriaDoble.setFont(SWTResourceManager.getFont("Segoe UI", 9, SWT.BOLD));
		lblEliminatoriaDoble.setBounds(76, 55, 200, 15);
		
		Label lblTenis = new Label(shlCompetencia, SWT.NONE);
		lblTenis.setText(competencia.getDeporte().getNombre());
		lblTenis.setFont(SWTResourceManager.getFont("Segoe UI", 9, SWT.BOLD));
		lblTenis.setBounds(63, 95, 200, 15);
		
		Label lblPlanificada = new Label(shlCompetencia, SWT.NONE);
		lblPlanificada.setText(competencia.getEstadoDeCompetencia().getNombre());
		lblPlanificada.setFont(SWTResourceManager.getFont("Segoe UI", 9, SWT.BOLD));
		lblPlanificada.setBounds(54, 135, 200, 15);
		
		tableParticipantes = new Table(shlCompetencia, SWT.BORDER | SWT.FULL_SELECTION);
		tableParticipantes.setBounds(308, 15, 241, 138);
		tableParticipantes.setHeaderVisible(true);
		tableParticipantes.setLinesVisible(true);
		
		TableColumn tblclmnEquipos = new TableColumn(tableParticipantes, SWT.NONE);
		tblclmnEquipos.setResizable(false);
		tblclmnEquipos.setWidth(237);
		tblclmnEquipos.setText("Lista De Equipos");
		
		for (Participante p : competencia.getParticipantes()) {
			TableItem tableItemParticipante = new TableItem(tableParticipantes, SWT.NONE);
			tableItemParticipante.setText(p.getNombre());
		}
		
		shlCompetencia.open();
		shlCompetencia.layout();
		while (!shlCompetencia.isDisposed()) {
			if (!display.readAndDispatch()) {
				display.sleep();
			}
		}
	}

	/**
	 * Create contents of the window.
	 * @wbp.parser.entryPoint
	 */
	protected void createContents() {
		shlCompetencia = new Shell(SWT.CLOSE | SWT.TITLE | SWT.MIN);
		shlCompetencia.setSize(565, 600);
		shlCompetencia.setText("Competencia");
		shlCompetencia.addListener(SWT.Close, new Listener() {
			public void handleEvent(Event event) {
				pantallaAnterior.shlBuscarCompetencias.setVisible(true);
				pantallaAnterior.shlBuscarCompetencias.forceFocus();
			}
		});

	}
}
